home *** CD-ROM | disk | FTP | other *** search
/ Aminet 44 / Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso / Aminet / dev / debug / MuForce.lha / MuForce / ReadMe < prev    next >
Text File  |  2001-05-18  |  66KB  |  1,426 lines

  1. The mmu.library project © 1998-2001 the mmu.library development group, THOR
  2. -----------------------------------------------------------------------------
  3.  
  4. Release 42.9.1
  5. ---------------
  6.     - MuForce: Marked the ROM area as WRITEPROTECTED rather than
  7.       ROM on exit, causing GURUs on erraneous writes into that area.
  8.  
  9. Release 42.9
  10. ---------------
  11.     - Due to a bug in the MMU-Configuration scan, Imprecise and
  12.       NonSerial were mutually exclusive within the MMU-Configuration
  13.       file. Result could have been less-optimal MMU setups on 68040
  14.       boards that could not have caused any instabilities, though.
  15.       (Hence, this is mainly a cosmetical fix...)
  16.     - MuProtectModules was updated to support to the LoadProtectModules
  17.       release 40.5 and beyond.
  18.     - FixP5SCSI: Added a check for the 1230scsi.device.
  19.  
  20. Release 42.8.1
  21. ---------------
  22.     - MuGuardianAngel: Fixed a bug in the page access handler that
  23.       could have invalidated pages under some alignment race 
  24.       conditions, thanks Stephen.
  25.     - 68060.library and 68040.library: Added explicit masking within 
  26.       CacheClearE() which might work around a potential firmware bug 
  27.       of the 68060 or of DMA driver firmware.
  28.     - 68060.library: Fixed a bug in the "unsupported FPU data type"
  29.       handler due to a register trash. Urgh! Thanks for the bug report,
  30.       Luca.
  31.  
  32. Release 42.8
  33. ---------------
  34.     - mmu.library: Fixed a fatal bug in the RebuildTree(s) calls that
  35.       trashed the DMA relevant MMU table mapping in case the MMU 
  36.       context remained untouched and RebuildTree(s) could have exited
  37.       immediately.
  38.     - MuFastChip: Added a check whether the program is really required,
  39.       and prints a warning in case it is not.
  40.     - MuFastZero: Tries now to detect the lower limit of the chip 
  41.       memory automatically and will remap all memory below this boundary.
  42.       Should help when using the ShapeShifter and "MuMove4K".
  43.     - Documentation: exd_Internal was at the wrong place in the C 
  44.       header files. (Urgh!) It was always correct in the .i files, 
  45.       though.
  46.  
  47. Release 42.6
  48. ---------------
  49.     - mmu.library: Fixed some very rare problems on access errors of
  50.       pre-decrement movems for both the 68040 and the 68060.
  51.     - MuMove4k: The PREPAREEMUL (without the A1200 switch) option was
  52.       broken and might have caused crashes on a reboot. MuMove4K 
  53.       installs now itself into MEMF_KICK and no longer MEMF_CHIP. If
  54.       this causes problems on your machine, try the INCHIPMEM option.
  55.     - MuFastZero: If ExecBase was remapped by means of the FastExec
  56.       option, installation of reset-proof programs behind MuFastZero
  57.       failed since these programs installed only into the non-resident
  58.       copy of ExecBase. MuFastZero includes now a patch to SumKickData()
  59.       which will avoid this problems.
  60.     - MuForce: MuForce installed an interrupt handler directly into
  61.       the autovector base which is not very system friendly. Fixed by
  62.       using the official interrupt handler. If MuForce crashes on exit,
  63.       disable your favourite "SaferPatches" clone and either avoid these
  64.       tools, or get "TRSaferPatches.lha" from Aminet.
  65.     - MuGuardianAngel: Supports now some not yet available memory pool
  66.       enhancement patches.
  67.     - P5Init: Fixed a potentially dangerous unaligned CopyMemQuick().
  68.     - A new MuLib based, tested and VMM aware 68060.library is now
  69.       available.
  70.     - Included a new tool, MuProtectModules. This will write-protect
  71.       resident modules loaded by "LoadModule". (See Aminet).
  72.     - MuEVD: Forgot an ATC table flush, result might have been partial
  73.       display gliches caused by erraneously dropped refresh cycles.
  74.     - FPU: Forgot to include this FPU control program. Fixed.
  75.     - 680x0.library: Did not identify a 68060 FPU correctly if used
  76.       to bootstrap the 68060.library by the patched SetPatch.
  77.     - 68060.library: Fixed a fatal bug in the fpsp core that could cause
  78.       crashes and hangs on execution of fscc instructions.
  79.     - 68060.library: Included a replacement function for CacheClearU()
  80.       since a 68060 version might not be available.
  81.     - 68040/68060.library: Included a new and improved CacheClearE()
  82.       function. Especially gvpscsi and omnscsi owners might profit
  83.       from this improvement.
  84.     - Included PatchWork 0.15 from Richard Körber. Thanks, Richard!
  85.     - Updated the documentation and the include files.
  86.     - Added the IGNORE keyword to MuFastZero.
  87.  
  88. Release 42.4.1
  89. ---------------
  90.     - CPU libraries: The FPU test was super-critical and failed if the
  91.       FPU could not complete a float->integer conversion before 
  92.       starting a concurrent frestore.
  93.     - CPU libraries: The GetMsg() replacement is now more conservative
  94.       and will return NULL in case the message list of the port is not
  95.       properly initialized or the linkage field of a node is (incorrectly) 
  96.       NULL. Thanks Ian!
  97.  
  98. Release 42.4
  99. ---------------
  100.     - Fixed several flaws of the 68060.library: Several cache flushes
  101.       have been missing, FPU setup has been fixed as well.
  102.     - Fixed the installer script: FixCybAccess must be "run" in 
  103.       background.
  104.     - MuGuardianAngel did not record the return PC correctly for the
  105.       pooled memory allocations.
  106.     - The mmu.library crashed on a plain 68000. Fixed.
  107.  
  108. Release 42.3
  109. ---------------
  110.     - Included an alpha release of a new 68060.library which provides a
  111.       fpsp.resource and is virtual memory aware. This alpha release can
  112.       be found in the LIBS/alpha directory.
  113.       Thanks goes to Stephen Brookes and Etienne Vogt for performing
  114.       some tests. Note though that I do not own a 68060 and could not
  115.       test this library for correctness.
  116.  
  117.     - Included a MMU driven ShapeShifter video driver, MuEVD. (new)
  118.     - MuGuardianAngel: Does no longer call RawIOInit() and hence will
  119.       no longer conflict with programs using the serial port even in
  120.       cases MuGuardianAngel never required the port in first place.
  121.     - MuForce: Does no longer call RawIOInit() but fully relies on the
  122.       Os and/or the user to initialize the serial port correctly, in the
  123.       same way the old Enforcer did. This means that MuForce will now
  124.       safely cooperate with software that requires the serial port in
  125.       cases MuForce output goes to the parallel port or other 
  126.       destinations.
  127.     - Note that there is now a new release of "BlizKick" which fixes 
  128.       the problems mentioned below.
  129.     - Updated the documentation, fixed a minor mistake in the MMU
  130.       developer's manual.
  131.     - Included an upgrade patch from SetPatch 44.13 to 44.14 which, once
  132.       again, opens the 680x0.library instead of the 68040.library.
  133.       The RamLibFix is then no longer required since it is included now
  134.       in SetPatch anyhow.
  135.     - MuGuardianAngel: The DUMPLIST routine had a bug and might have
  136.       allocated too less memory. Luckely, this had the only side effect
  137.       that not all of the mung list would have been dumped correctly, it
  138.       did not trash any memory.
  139.     - MuGuardianAngel: The DUMPLIST option now also makes use of the 
  140.       SegTracker to print segment/hunk information of the allocating
  141.       routine.
  142.     - Installation scripts: Due to a bug in the BuildMMUConfig.rexx
  143.       script, the on-board hardware of certain P5 boards has been disabled
  144.       completely. Urgl.
  145.     - mmu.library: Added a new command for the ENVARC:MMU-Configuration,
  146.       "FOR". It executes the command given as argument if the manufacturer
  147.       product code fits, possibly several times if more than one board is
  148.       in the machine.
  149.     - mmu.library: The MMU-Configuration file can now be put into DEVS: as
  150.       well since some people seem to have problems with the library and
  151.       HappyEnv.
  152.     - mmu.library: Added another new command "ClearMMU" which will re-run
  153.       the MMU setup procedure at least partially. The intention behind 
  154.       this is to override or ignore a previously loaded MMU tree at least
  155.       partially in places where it is sub-optimal or incorrect. This seems
  156.       to be required by some Apollo boards.
  157.     - mmu.library: EnterContext() and LeaveContext() are no longer running
  158.       into the risk of breaking a Forbid(), provided AllocMem() doesn't.
  159.       NOTE THAT I NEVER DOCUMENTED THIS FEATURE ANYHOW.
  160.       This might help for some critical applications where a launched task
  161.       must run in a new context.
  162.       Due to a feature of exec, you cannot enter a context before you
  163.       AddTask() a new task, sigh.
  164.     - mmu.library: Due to a trashed register, the library crashed upon
  165.       detection of an 68040 or 68060 with a disabled or otherwise non-
  166.       functional MMU. Note that it would have detected the EC processors
  167.       correctly, though, including the 68EC030. This release should do 
  168.       better. Thanks to Pavel for detecting this.
  169.     - Fixes: Added a fix to repair the UMult64()/SMult64() bug of the Os
  170.       for the 68000 and 68010 processors. Not required for the up-to-date
  171.       release of SetPatch, but otherwise recommended.
  172.     - mmu.library: AddConfigDev() is now supported, but the implementation
  173.       depends on some internals of the expansion.library. Hopefully, 
  174.       nobody will change them. The MuLib tries to check whether the ROM
  175.       function is still installed. In case it is, the code will jump into
  176.       the old ROM code. In case it isn't, a replacement routine is used.
  177.     - 680x0.libraries: AddConfigDev() is now passed thru, presumably to the
  178.       mmu.library function.
  179.     - Installation: Finally, wrote a (rather complicated) installation
  180.       script for automated installation.
  181.     - Included various fixes for the BVisionPPC driver and more "software
  182.       fluff" for the installation process.
  183.     - 68040.library: Impoved the GetMsg() workaround for programs that
  184.       call GetMsg() in a tight loop.
  185.     - 68040.library: Fixes now a bug in the mathieeesingbas.library 
  186.       which doesn't use a FPU since it is setup before this library is
  187.       setup.
  188.  
  189.  
  190. Release 42.2
  191. ---------------
  192.     
  193.     - The 42.1 release automatically marked all hardware pages as
  194.       cacheinhibited serialized. Looks like even that was too much for
  195.       some hardware boards, I don't know why. This should be the proper
  196.       default anyhow. I disabled this again, even though this means,
  197.       as for 42.0 and before, that a MMU-Configuration is *mandatory*
  198.       if you use the library as "stand-alone" instead on top of a third-
  199.       party 68040/68060 library.
  200.  
  201. Release 42.1
  202. ---------------
  203.  
  204.     - MuFastChip: Forgot to include the latest mmu.library in the latest
  205.       upload. Sorry.
  206.     - Installation: P5Init, PPCIdentify, P5Identify reworked again, it
  207.       enables now explicitly the bus error generation of the A4000
  208.       motherboard resources.
  209.     - Installation Rexx scripts: Added a "NoP5" keyword to disable ex-
  210.       plicitly the P5 identification steps which seem to be problematic
  211.       for some boards for reasons that are beyond me.
  212.     - MuManual: Fixed some typos, corrected some mistakes, clarified some
  213.       formulations. Thanks to Etienne Voigt for proofreading!
  214.     - Organization: The "MMULib" archive is now the user archive, all
  215.       developer information went into the "MuManual" archive, including
  216.       the autodocs, the includes, the bmaps and some example sources.
  217.       This will help to keep the archive short.
  218.     - mmulib: The CurrentContext() function forgot to Forbid() properly.
  219.       Note that you still need a Forbid() bracketing or the result code
  220.       might be pretty useless. The propability that this broke code is
  221.       very low, though.
  222.     - mmulib: GetMappingProperties() was simply broken in V42.0 and below.
  223.       Sorry, this got fixed. This function hasn't been used yet, so this
  224.       bug was left unnoticed.
  225.     - mmulib: Even if "ClearTTX" is missing in the MMU-Configuration, the
  226.       library cache-inhibits now the access to expansion boards. This is
  227.       just a safety bonus.
  228.     - Included a debug version of the library in the MuManual archive.
  229.     - BlizKick: In order to avoid a yellow alert, either BlizKick must be
  230.       modified or must be run behind SetPatch. The reason for the alert
  231.       is that BlizKick opens the mmu.library before the 68060/68040 lib
  232.       is open, which is and never has been legal. I just added an explicit
  233.       check for this condition in V42 because too many people ignored it.
  234.       As I said, "no discussion". This is a side effect of how the library
  235.       works and has to work.
  236.  
  237. Release 42.0
  238. ---------------
  239.  
  240.     - mmu.library: Added more error checking for the startup code, esp.
  241.       the MMU-Configuration file. Added a check for proper config-
  242.       uration, i.e. whether the library was (incorrectly) loaded in
  243.       front of SetPatch.
  244.     - Added a new function: RunOldConfig(). It runs a small supervisor
  245.       routine with the boot MMU configuration.
  246.     - 68040.library: Added an explicit check for correct configuration,
  247.       it will generate a requester in case no 68040 is available.
  248.     - MuGuardianAngel: Fixed a bug in the mung-wall check which could 
  249.       have reported one additional mung-wall damage in case the front 
  250.       wall was found defective. Added a workaround for a possible 
  251.       68060 firmware bug, the "U" bit is now always set in the MMU
  252.       descriptors to avoid unnecessary MMU writebacks.
  253.     - In case you see MuGuardianAngel hits of the z3scsi.device, run
  254.       the FixCybAccess program. It will work around the z3scsi.device 
  255.       hits as well. Thanks, Helmut.
  256.     - MuMove4K PREPAREEMUL moves now the low chip memory end to the
  257.       16K line, not to the 8K line. This might fix some Fusion
  258.       problems. Thanks, Pavel.
  259.     - Improved the error messages of MuFastZero a little bit.
  260.     - Reworked P5Identify and PPCIdentify to make these two more
  261.       stable.
  262.     - Added another external MMU setup command, P5Init. It should 
  263.       keep care about all P5 specific cache settings and should
  264.       setup the PPC and the BOOT-MMU-Port automatically. All manual
  265.       P5 specific entries in the MMU-Configuration except graphic 
  266.       board cachings are obsolete now and should be replaced by
  267.       P5Init.
  268.     - Rewrote both setup scripts to reflect the changes in the P5
  269.       setup logic, i.e. ScanMMUPort has been replaced by P5Init and
  270.       all P5 specific cache settings have been removed.
  271.     - Added stack increasement patches for the mfm.device (CrossDos)
  272.       and IPrefs 40.7 in case you do not yet use Os 3.5. Thanks Gene.
  273.     - Added a fix for two bugs in ramlib. First, its stack is too
  274.       low. Second, it uses SIGF_SINGLE as message bit for its process
  275.       port which could cause some race conditions with semaphores in
  276.       library setup code.
  277.     - The MuGuardianAngel patch report and automatic IRQ check have 
  278.       been reworked a bit. The "patches overwritten" message is now
  279.       no longer periodically generated, but will be suspended up to
  280.       the next "real" hit where another message will be generated.
  281.     - The MuGuardianAngel automatic IRQ stack was not only useless,
  282.       but in fact broken. This does not go for the stack check of the
  283.       exec memory handling functions which was and still is fine.
  284.       Good enough it was recommended to leave the IRQ check disabled. 
  285.       "Nearly out of stack" warnings were not generated by the IRQ code 
  286.       at all, and the stack overflow and stack underflow messages
  287.       usually report "bogus" hits due to its construction. Stack 
  288.       snooping is now by default ENABLED, except for "out of bounds"
  289.       reports, which still requires STACKSNOOP option explicitly.
  290.       Added an option to adjust the minimal stack size for the
  291.       "Nearly out of stack" reports, but it can be made only larger,
  292.       i.e. more "picky".
  293.     - mmu.library: The pre-42 releases only marked the zero page as
  294.       non-blank which might have caused problems for some Mac emu-
  295.       lators. It now marks the lowest 32K as valid. Former versions
  296.       set it to "cacheinhibit", it is now set to "cacheinhibit nonser-
  297.       ialized imprecise".
  298.     - mmu.library: The low-memory limit up to which the mmu.library
  299.       has to software-emulate accesses has been made adjustable.
  300.     - mmu.library: Due to a bug in the high-level mapping list manage-
  301.       ment, MAPP_INDIRECT did not work correctly.
  302.     - mmu.library: BuildIndirect() performs now a few more consistency
  303.       checks and is less restrictive for MAPP_INVALID and MAPP_SWAPPED.
  304.     - Updated the DMAInitiate() function, it provides now a return code
  305.       instead going guru if it doesn't like the parameters.
  306.     - Updated MuOmniSCSIPatch to reflect the changes made to 
  307.       DMAInitiate().
  308.     - Fixed many documentation errors in mmu.doc, updated and checked
  309.       exception.doc again.
  310.     - Included a demo program for indirect descriptor handling.
  311.     - Speedup SetIndirect() somewhat by placing this routine directly
  312.       in the MMU drivers as a "native" operation.
  313.     - Added a new LVO "SetIndirectArray()" to set more than one
  314.       indirect descriptor at once. Should be *very* fast.
  315.     - The startup command "DescriptorCacheInhibit" did not pass a proper
  316.       result code on success and hence caused a yellow alert. This bug
  317.       was only noticable in some of the V42 betas where proper result
  318.       code checking was introduced.
  319.     - mmu.library: WithoutMMU() disables now the CPU caches as well to
  320.       allow a safe access to non-cacheable addresses.
  321.     - MuFastZero: In case MuFastZero is removed (why?) the unmapped chip
  322.       memory is set to IMPRECISE and NONSERIALIZED to provide at least
  323.       a minimal speedup.
  324.     - Added "AmigaGuide" versions of the autodocs.
  325.     - Included a new version of BPPCFix by Frank Wille. Thanks, Frank!
  326.       Using this program will allow you to replace the ROM-based
  327.       libraries of the Blizzard-Boards.
  328.       Thanks Stephen for working this out, and for making this trick
  329.       possible!
  330.     - Included a "RKRM" style manual and tutorial for the MuLib in "dvi"
  331.       and "postscript" format.
  332.  
  333. Release 41.4
  334. ---------------
  335.  
  336.     - mmu.library: The CachePre/PostDMA() functions are now a bit more 
  337.       error tolerant and handle cases where a DMA device attempts DMA 
  338.       transfer to a non-existing memory region more gracefully.
  339.     - 680x0.library: Sets now the memory attributes of the supposed-to-
  340.       be remapped low-memory header to MEMF_FAST instead to 0 to avoid
  341.       a zero return value of TypeOfMem().
  342.     - MuFastZero: Sets now the memory attributes of the supposed-to-
  343.       be remapped low-memory header to MEMF_FAST instead to 0 to avoid
  344.       a zero return value of TypeOfMem(). Lowered the priority of the
  345.       rendezvous port.
  346.     - FastIEEE: Optimized the IEEEDPFloor and IEEESPFloor in case a 060
  347.       processor has been found. Note that this makes currently no
  348.       difference at all since there is currently no 68060.library that
  349.       provides the fpsp.resource.
  350.  
  351.     
  352. Release 41.3
  353. ---------------
  354.  
  355.     - disassembler.library:    fmovem.x <dynamiclist>,memory was disassembled
  356.       incorrectly. Fixed.
  357.     - mmu.library: SetPropertiesMapping() accepts now base=0 and lenght=0
  358.       as a special case to transfer the complete list.
  359.     - 68040.library: Removed some unnecessary strings and references to the
  360.       math libraries. 
  361.     - mmu.library: Added workarounds for possible DMA disable counter under-
  362.       runs that might have happened in case the library gets active while 
  363.       DMA is active. 
  364.     - MuMove4K: Added more options:
  365.       IGNOREVERIFY/S    Disables the verify check for the reboot code
  366.       REVERSE/S        Allocates the memory for the resident tags in
  367.                 reverse direction
  368.       LOWPRI/S        Lowers the priority of the MuMove4K resident 
  369.                 tag as a possible workaround for some wierd 
  370.                 other hacks.
  371.       Added more error messages in case something goes wrong.
  372.     - MuForce: Forgot to restore the Z-page mode and physical location on
  373.       removal. Ooops. Thanks, Heinz!
  374.     - MuFastZero: Added a "FastVBR" option because it was easy to do and
  375.       canonical to have. NOTE THAT THIS OPTION IS NOT REQUIRED IF YOU
  376.       REMAP THE VECTOR BASE ANYHOW.
  377.     - MuGuardianAngel: Prints now the stack boundaries in case of stack 
  378.       problems, let it be overflow, underflow or nearly out of stack. 
  379.       Thanks to Heinz, again.
  380.       Provides an option to disable these warning messages, but beware! 
  381.       This doesn't mean bugs will go away, it just silences MuGuardianAngel.
  382.       Remember, this program is provided to scream upon problems it detects.
  383.     - Setup scripts: Greatly enhanced! The new setup script will also 
  384.       re-set the memory caching modes for boards whose boot-roms already 
  385.       run the MMU. Fixed a minor glinch that produces a (bogus) error report
  386.       in case LIBS:MMU already existed.
  387.       Remember that you can't run the ppc.library on the MuLib setup, sorry.
  388.     - Added a new setup script "ScanToConfig" that takes a "MuScan" output
  389.       from a system running under a third-party 68040/68060.library and 
  390.       generates an MMU-Configuration file from it. To use it, re-install a 
  391.       non-MMU-aware processor library, boot the system, then enter the 
  392.       "Install" directory and run the script. MuScan must be available 
  393.       in the current directory as it is in the archive.
  394.       Please let me know how this new script goes, maybe it's smarter.
  395.     - Added a new program "MemModes" to the installation tools. It will
  396.       auto-generate the memory caching setup as the mmu.library does if
  397.       the MMU is found non-active. Possibly an improvement for those boards
  398.       which - strange enough - turn on the MMU before booting.
  399.     - Added a patch for the new SetPatch in the BoingBag, check the "Fixes"
  400.       directory.
  401.     - Again: When will people finally learn to read the FAQ? *Sigh*
  402.       In case MuFastZero complains "The zero page is already remapped",
  403.       ---> READ THE GUIDE. <---
  404.  
  405.  
  406. Release 41.2.1
  407. ---------------
  408.  
  409.     - Updated the 68040.library to 40.6. It builds now the fpsp.resource
  410.       which offers opcode emulation to external hosts.
  411.     - Included FastIEEE which re-directs the mathieee-library routines to
  412.       the fpsp.resource for optimal performance.
  413.     - FastIEEE fixes, too, some bugs in the mathieee libraries. 
  414.       IEEEDPCmp() is broken and orders some numbers "the wrong way". 
  415.       IEEEDPPow() and IEEESPPow() are broken and return non-sense for 
  416.       special arguments.
  417.  
  418. Release 41.2
  419. ---------------
  420.  
  421.     - The MMU Library build-in AddMem failed in case the base or length
  422.       were not aligned to 64K boundaries. It now rounds to the next 64K
  423.       boarders such that the supplied area is at least mounted partially.
  424.     - The idea to disable the TTx registers in the mmu.library was 
  425.       unfortunately not a very smart idea as it broke the code on some
  426.       machines. Re-established the old rule with the only exception that
  427.       the TTx registers are initialized for the EC040.
  428.     - The ColdReboot() patch of the 68040.library used the MMU registers
  429.       even on a system without MMU. Fixed.
  430.     - MuMove4K checks now all libraries, devices, ports, resources and 
  431.       resident modules whether they violate the 8K boundary.
  432.     - 68040.library: Forgot to disable the caches in ColdReboot().
  433.     - 68040.library: The motorola OpErr handler did not consider tracing
  434.       correctly. Fixed.
  435.     - Finally wrote and included the 68020.library and the 68030.library,
  436.       hence "FPU" will work on these machines.
  437.     - Updated MuGuardianAngel: Added a new keyword "DUMPWALL" that prints
  438.       the contents of a broken mung-wall and of broken memory cookies.
  439.  
  440. Release 41.1
  441. ---------------
  442.  
  443.     - ScanMMUPort was broken and scanned for the wrong port. *Sigh*
  444.       This release should work better on Blizzard boards.
  445.     - AddMemList() uses now RebuildTreesA() to rebuild user and
  446.       supervisor tables at once and is therefore a bit more error
  447.       tolerant.
  448.     - The mmu.library will now support CachePreDMA/CachePostDMA for
  449.       the EC040 and EC060 processors as well.
  450.     - The 68040.library will now disable the TTx registers manually
  451.       such that the "generic" board does no longer require an
  452.       ENVARC:MMU-Configuration file.
  453.     - The 68040.library will now enable copyback caches for the EC040.
  454.     - Some of the MuTools did not unload properly if loaded from the workbench,
  455.       fixed.
  456.     - The MuTools are now a bit more error tolerant due to a new function in the
  457.       V41 mmu.library which gets used.
  458.  
  459. Release 40.60
  460. -------------
  461.  
  462.     - fixed the shutdown code of MGA, thanks to Stephan!
  463.     - disabled a kludge in the mmu.library which write protected 
  464.       a kickstart image at 0x00200000 and up by checking the name 
  465.       of execbase. This kludge might have conflicted with some softkickers.
  466.     - Because people tend not to read guides, I added the 
  467.       arguments "WRITEPROTECTED" and "INVALID" to the library build-in 
  468.       "SetCacheMode". Note that they work different to what "MuSetCacheMode" 
  469.       does. Here, "WRITEPROTECTED" and "INVALID" are just aliases to "ROM" 
  470.       and "BLANK", hence enable the most defensive protection strategy.
  471.     - Added a new LVO "RebuildTreesA" which is "officially" not yet 
  472.       existing and will be documented in V41. More LVOs might be added up 
  473.       to V41, but please *DO NOT* yet call them as they did not exist 
  474.       in V40.50.
  475.     - Fixed the installation script, due to a typo the P5 MMU boot hack 
  476.       was not detected.
  477.     - Fixed the P5Detect program which just looked to the wrong
  478.       identification resources. Ooops. Installation on "non-standard"
  479.       boards should be smoother now.
  480.     - Fixed a bug in the disassembler.library which disassembled the
  481.       lea (offset.L,pc)
  482.       wrong. The offset was wrong by two bytes.
  483.     - The release number in the MuForce guide was wrong. 
  484.     - When will people finally learn to read the FAQ? *Sigh*
  485.       In case MuFastZero complains "The zero page is already remapped",
  486.       ---> READ THE GUIDE. <---
  487.  
  488.  
  489. Release 40.51.1
  490. -------------
  491.  
  492.     - disabled the layers.library kludge for MuGuardianAngel if V40
  493.       is found active. It is luckely no longer required.
  494.  
  495. Release 40.51
  496. -------------
  497.  
  498.     - fixed a bug in the 68060 startup logic which left the MMU disabled
  499.       in case it was disabled before. This made the custom 68060.library
  500.       useless.
  501.     - included the 40.17ß3 release of Carten Schlote's 68060.library
  502.       which (for the first time) makes use of the MMU.library.
  503.  
  504. Installation of this library requires some care as IT DOES NOT automatically
  505. auto-detect P5 hardware and special setup magic for this hardware. This is
  506. not because the library is "broken" in some sense, but because P5 didn't 
  507. follow the CBM guidelines when designing their hardware. Therefore, an
  508. experimental installation script has been written. This script must be
  509. run as follows:
  510.  
  511.     - Unpack the archive to disk,
  512.     - Enter the following commands:
  513.  
  514. cd <MMULib>/Install    ;where <MMULib> is the directory you unpacked this 
  515.             ;archive to
  516.  
  517. SYS:Rexxc/rx BuildMMUConfig.rexx ENVARC:MMU-Configuration
  518.  
  519.     - The last command builds the MMU configuration and writes it
  520.       to ENVARC:MMU-Configuration. It might also copy ScanMMUPort
  521.       to LIBS:MMU. This is an external setup command for the library
  522.       and might or might not be required. Older P5 hardware does *not*
  523.       require it (I would guess that this is explicitly for the 
  524.       Blizzards, but I'm not sure).
  525.       Non-P5 hardware will not require it at all.
  526.       You might want to hand-edit or optimize this script if you need,
  527.       as it will contain several optimizations for graphics cards and
  528.       other known boards.
  529.  
  530.     - KEEP THE OLD 68060.library IN A SAFE PLACE.
  531.     - Make sure to install the 40.51 edition of the mmu.library
  532.     - Copy the 68060.library to LIBS:
  533.     - Reboot the computer and wish the new library luck. (-:
  534.  
  535. This edition of the '060 lib does *not yet* include correct VMM management
  536. and FPU control functions (hence, C:FPU will not yet work). It is shorter
  537. and costs less memory because it leaves the MMU setup to the mmu.library.
  538. (Note that this release contains still debugging information).
  539.  
  540.  
  541. In case the installation failed:
  542.  
  543.     - Make sure the mathieedoubbas.library you're using is truely the
  544.       official 38.x or the patched and bugfixed 39.1. Some other third-
  545.       party products may fail to work correctly if the 68060 support
  546.       code is not yet loaded.
  547.  
  548. In case running the library fails (i.e. system doesn't boot):
  549.  
  550.     - Make sure LIBS:mmu/ScanMMUPort is really available at boot-up
  551.     - Please re-boot the computer without the startup-sequence,
  552.     - Keep ENVARC:MMU-Configuration in a safe place,
  553.     - Re-install the old 68060.library.
  554.     - Boot the computer again,
  555.     - Run "MuScan" and keep the output.
  556.  
  557. Then, please sent me the output of MuScan, and the ENVARC:MMU-Configuration
  558. file with a tiny note what exactly happened (or did not happen).
  559.  
  560.  
  561. Release 40.50
  562. --------------
  563.  
  564.     - added external command scanning in case a setup command is
  565.       not found "resident".
  566.     - included Richard Körber's PatchWork and Olaf Barthel's
  567.       Sashimi. The "PatchWork" edition is *NEW* and *NOT YET AVAILABLE*
  568.       otherwise. Big "thank you" to Richard for updating it for this
  569.       archive. Big thanks to Olaf Barthel for allowing me to include
  570.       his "Sashimi" in the archive.
  571.     - bumped the version number.
  572.     - Final release.
  573.  
  574. Release 0.48
  575. --------------
  576.     - mmu.library: Added a new command in the MMU-Configuration file,
  577.       "DescriptorCacheInhibit". It controls whether the MMU library
  578.       should disable the data cache for the descriptors. This is by
  579.       default OFF as this feature means more trouble for the library,
  580.       and is not required for using the library. However, this might
  581.       be a workaround for programs that hack the MMU table themselves,
  582.       which is not supported anyhow. Set it to "ON" if you MUST use
  583.       these programs.
  584.     - Added another VMM support function.
  585.     - MuGuardianAngel: The "memory header" output was broken, fixed.
  586.       Added more security checks, MuGuardianAngel will warn you in
  587.       case its function entries have been patched (which is not 
  588.       supported)
  589.     - MuGuardianAngel: Added automatic stack checking within the
  590.       memory allocation functions - an overrun stack seems to be the
  591.       most common source of MuGuardianAngel problems. MuGuardianAngel
  592.       will now detect an "nearly out of stack" condition in the memory
  593.       handling, and will provide an "emergency" stack in case this
  594.       happens. It will then generate a warning, regardless of whether    
  595.       stack snooping is enabled or not.
  596.       Interestingly, the RAM-Handler and the FastFilingSystem are the
  597.       most common sources of stack-overflows. This should be fixed for 
  598.       the RAM handler with "PatchRAM" in this archive, the FFS stack
  599.       should be added manually in the RDB, though. The smallest re-
  600.       commended stack size is 786 bytes, not less!
  601.     - P96: (yes, you read this correctly) supports now the mmu.lib if
  602.       it is available.
  603.     - Added an experimental GfxCard setup program to optimize cacheing.
  604.       This function is included in P96 anyhow, so not really required.
  605.  
  606.     - mmu.library: MOVE16 is now "sort of" supported, in the sense that
  607.       the exception handler will be able to handle it. However:
  608.       - MOVE16 is not supported by all Amiga hardware, it may crash,
  609.       - A MOVE16 on a 68040 is potentially dangerous due to a bug in
  610.         the CPU. A MOVE16 might invalidate cache lines which are not
  611.         related to the MOVE16 operation at all. There is currently a
  612.         workaround for this, namely: Do not set the "imprecise", or
  613.         "user page" bits 0-3 for swapped, invalid or supervisor only
  614.         pages. I do not guarantee that this workaround will remain
  615.         valid. *JUST DON'T USE MOVE16.*
  616.       - A MOVE16 may cause double reads, do not use this to read from
  617.         hardware registers that cannot tolerate this. Do NOT use it
  618.         at all!
  619.       - A MOVE16 which causes the exception handler to enter may be
  620.         completed by means of ordinary writes, which means that in
  621.         this situation no burst access is used, and the order of the    
  622.         data written out or read might be different from that of a
  623.         true MOVE16. *JUST DO NOT USE IT, OK!*
  624.  
  625.     - mmu.library: On read/modify/write accesses, the library might
  626.       have reported a write protection fault instead of a simple 
  627.       write fault on the write cycle of the instruction. Fixed.
  628.  
  629.     - MuGuardianAngel: Added more consistency checks, added checks
  630.       and support for memory pools, made some error messages more
  631.       informative.
  632.  
  633.     - MuMove4K: Added the NOREBOOT option to avoid unnecessary reboots
  634.       if the system is rebooted by a second program afterwards anyhow.
  635.  
  636.     - Included a patch for the V44 SetPatch.
  637.  
  638. Release 0.47
  639. --------------
  640.     - mmu.library: Changed again the cache control logic a bit. Please
  641.       try DMA transfers again. The new logic does not block interrupts
  642.       as long as the old logic, hence might avoid problems if fast
  643.       interrupt processing is required. It should be *slightly* faster
  644.       as well.
  645.     - MuForce: MuForce catches now supervisor exceptions as well if you
  646.       specify the "CAPTURESUPER" keyword. This requires patching of
  647.       some autovectors.
  648.     - Added a new drawer "Contributions", containing more tools from
  649.       other people I regard as very useful. This is "Sashimi" by
  650.       Olaf Barthel, and "PatchWork" by Richard Körber. Thanks Olaf,
  651.       thanks Richard for allowing me to include your great work!     
  652.     - Run all guides thru ISpell, hopefully correcting most typos.
  653.     - MuMove4K: The PREPAREEMUL option disabled the CPU instruction
  654.       cache. I expected the ROM would re-enable it somewhat later, but
  655.       it didn't. Fixed.
  656.  
  657. Release 0.46
  658. --------------
  659.     - mmu.library: Found that the "ramlib" task is really very low on
  660.       stack. I'm now swapping the stack on library startup to avoid
  661.       problems.
  662.     - updated the mmu.lib exception handler. It is now possible to use
  663.       the exception mechanism to auto-extend the stack and to keep the
  664.       user stack on virtual memory. The new "message hook" mechanism
  665.       does not require user stack space. However, an additional patch
  666.       to the exec switch function is required for this trick. This
  667.       patch is currently not included in the mmu.library - basically
  668.       because this is not directly MMU related.
  669.     - MuGuardianAngel will now stop to check for a valid free memory
  670.       counter if it finds a problem and reports the problem immediately.
  671.     - MuForce is now able to capture even "ordinary" MC68K exceptions.
  672.       This can be disabled with the new "NOGURUPATCH" option.
  673.     - Included a "synchronous" version of the 680x0.library because the
  674.       asynchronous outsmarted several systems.
  675.     - mmu.library: The chip ram is now by default marked as cacheinhibit 
  676.       imprecise nonserialized. This will speed up chip ram access a bit
  677.       for the 68060 and 68040. Works of course only if the MMULib is
  678.       used to setup the MMU tables, i.e. for users of the V40 68040 lib.
  679.       Video RAM of several graphics cards can be setup in the same way
  680.       as well, but since there's no way to identify expansion hardware as
  681.       video ram, you've to do that manually.
  682.     - mmu.library: The F-Space is now by default marked as cacheinhibit
  683.       to allow (IMHO misdesigned) hardware to map in here without telling
  684.       the system. This can be disabled by using the MMU-Configuration
  685.       file.
  686.     - Added a new MuTool: MuFastChip. This tool will enable the imprecise
  687.       or nonserialized cache mode for chip memory and will hence improve
  688.       chip memory access performance for systems where a third-party 040 
  689.       or 060 library does not setup the MMU tables in the optimal way.
  690.       The MMU.library (and hence the V40 68040.lib) *will* build its own
  691.       MMU tables with this feature enabled anyhow if it doesn't find an
  692.       MMU table to start from. 
  693.     - Fixed the SetPatch fix. (You kept the original, right? :-)
  694.       It might have been that the 43.7 edition installed a fix for the
  695.       mathieeesingbas.library even if this fix is unnecessary and fatal,
  696.       as it is for the 68881/68882 FPU.
  697.  
  698. Release 0.44
  699. --------------
  700.     - mmu.library:    The "AddMem" command in the MMU-Configuration file
  701.       was broken. Added the memory twice, causing nothing but a mess.
  702.     - Added a safety check for "AddMem", the command is now ignored
  703.       in case the memory in question is already added.
  704.     - "SetCacheMode" argument "valid" was broken and did not validate
  705.       the memory at all.
  706.     - AddMem'd memory was added after the MMU table setup, hence wasn't
  707.       used for the MMU descriptors. The library *tries now* to add it
  708.       as soon as possible to make some use of it for building the MMU
  709.       trees.
  710.     - MuFastZero: The FORCENATIVE option generated a failure code in
  711.       case the zero page wasn't remapped, stopping additional options
  712.       like MOVESSP from working.
  713.     - MuGuardianAngel: The "MemHeader free counter incorrect" error
  714.       handler did not save back one register and hence caused additional
  715.       hits.
  716.     - MuGuardianAngel: Ooops, found a problem of the RAM-Handler. Not
  717.       a MuGuardianAngel problem, but a real design fault of RAM: DO NOT
  718.       try to delete and write to the RAM: disk at the same time, this
  719.       will cause lots of trouble.
  720.     - Included a fix for the CBM mathieeedoubbas.library 38.2. This
  721.       library fails to compare floating point numbers below zero
  722.       correctly in some cases. The P5 library patches mathieeedoubbas
  723.       to fix this, but the 68040.library should not be a replacement
  724.       for SetPatch. To apply the patch,
  725.  
  726. 1)      Copy the file LIBS:mathieeedoubbas.library to RAM:
  727. 2)      Copy the file mathieeedoubbas.pch in the directory "Fixes" to RAM:
  728. 3)      Copy the "spatch" program at the same place to RAM:
  729. 4)      Change the directory to ram: with "cd RAM:"
  730. 5)      Apply the patch with    "spatch mathieeedoubbas.library"
  731. 6)      Copy the file RAM:mathieeedoubbas.new to
  732.         LIBS:mathieeedoubbas.library. It contains the fixed library.
  733.  
  734.     - In case the V40 68040.library slowed your computer down:
  735.       copy the file "MMU-Configuration" from the "ENVARC" drawer into
  736.       "ENVARC:". In case this causes crashes with Z-II memory, follow
  737.       the instructions in the file and remove one semicolon in front of
  738.       the "SetCacheMode" command. 
  739.     - Removed the debugging information from all files.
  740.     - Added the MMU master guide. Please check this, is this understand-    
  741.       able? In case I forgot to mention you in the credits, please let
  742.         me know!
  743.     - Moved all libraries to a separate directory, "Libs"
  744.     - Included a new library, the 680x0.library. This is the CPU
  745.       unspecific CPU driver. It's job is to detect which CPU is avail-
  746.       able in your system, and to load the CPU specific code. It there-
  747.       fore acts very much like the P5 68040dummy.library, except that
  748.       it remains in the system and provides user-callable function
  749.       entries for querying the CPU/FPU/MMU type and to setup the FPU
  750.       exceptions. The CPU specific library *should never be called
  751.       directly*, this library will re-route the calls to the correct
  752.       library. Furthermore, it loads the library in background, helping
  753.       to speed up the boot process a bit. 
  754.     - A special edition of SetPatch is available that loads the 680x0
  755.       library instead the 68040.library, regardless of which processor 
  756.       is available. The 680x0.library will then even try to load an
  757.       68000.library or 68020.library. This library could be used, for
  758.       example, to install line-F instructions to emulate the FPU 
  759.       completely in software, even for a 68020 or 68000 without FPU.
  760.       To patch "SetPatch", 
  761.  
  762. 0)    Keep a copy of SetPatch in a safe place.
  763. 1)      Copy the file C:SetPatch to RAM:
  764. 2)      Copy the file SetPatch.pch in the directory "Fixes" to RAM:
  765. 3)      Copy the "spatch" program at the same place to RAM:
  766. 4)      Change the directory to ram: with "cd RAM:"
  767. 5)      Apply the patch with    "spatch SetPatch"
  768. 6)      Copy the file RAM:SetPatch.new to C:SetPatch. This is the
  769.     inofficial 43.7 edition of SetPatch.
  770.  
  771.     - Included a new program, "FPU" in the "Shell only" drawer. This
  772.       program controls the exception generation of the FPU. It will
  773.       only work with the 680x0.library and the V40 68040.library
  774.       installed.
  775.  
  776.  
  777. Release 0.42
  778. --------------
  779.  
  780.     - 68040.library: Only cosmetic changes. Added a AN_Zombie guru in
  781.       case the ColdReboot() function returned. I've no idea how this
  782.       could happen.
  783.     - mmu.library: I don't thrust the AFF_68060 flag any more. The
  784.       68060.library of the LC75 Apollo board does not set this bit
  785.       correctly and hence identifies the 060 as 040. Hence, the library
  786.       tried to install the wrong driver and crashed desparately. The
  787.       library tries now to identify an 060 in case at least an 040 is
  788.       indicated. The library updates then its own AttFlags copy 
  789.       correctly. Outch! I don't know whether this is a typo in the
  790.       sources of the 68060.lib, or this intended and something "sneaky"
  791.       I fail to understand. 
  792.     - Fixed one bug in the disassembler.library. It failed to disassemble
  793.       64 bit arithmetics correctly.
  794.     - MuFastRom: In case no argument is given, the program uses now the
  795.       default "On".
  796.     - MuFastZero: Again, made "On" the default argument. Added the
  797.       "MoveSSP" and "StackSize" arguments to relocate the supervisor
  798.       stack to fast ram. This does not make use of the MMU.
  799.     - Added the "CheckFPU" command, in the "Shell_Only" drawer. This
  800.       program prints the version number of a 68040 FPU if one is avail-
  801.       able. Two versions exist, the V40 "original" which is very buggy
  802.       and the V41 "revised" with less bugs. The 68040.library supports
  803.       currently both, with lots of workarounds for the V40. Please
  804.       contact me in case you find a V40 edition in your Amiga.
  805.     
  806.  
  807. Release 0.41
  808. --------------
  809.  
  810.     - Forgot to update the version number in 0.40. Reported 0.38. Oops.
  811.     - TTx parsing was still not 100% correct, but much better. Fixed.
  812.     - Due to a typo, branch cache flushes were effectively disabled.
  813.       Outch! Forgot one single "$".
  814.     - Added branch cache flushes on context switches, recommended by
  815.       Motorola.
  816.     - Added includes, autodocs and .fd files for the 68040.library.
  817.     - Updated MuFastZero and MuFastROM to include and set the cache
  818.       flags according to the mirrored RAM. This is of importance in
  819.       case non-cacheable Z-II fast RAM is used to build the mirror.
  820.     - Made mild modifications to the FPSP FPU emulator package to speed
  821.       it up a bit. The 40.1 release is now unnoticably faster than the
  822.       Mike Sinz 37.30 release, which is again unnoticably faster than
  823.       the P5 release.
  824.     - Added a workaround in GetMsg() to keep some brain-dead programs
  825.       working that call GetMsg() in a tight loop without giving
  826.       interrupts a chance to occur. These programs tend to block the
  827.       computer completely, especially if the ROM is remapped to 
  828.       cacheable, burstable memory. The workaround is a single NOP.
  829.  
  830. Release 0.40
  831. --------------
  832.     New in this release:
  833.  
  834.     - Added four internal undocumented LVOs for external CPU drivers.
  835.     - Fixed a bug in the CPU detection routine. A 060 EC or LC was
  836.       not recognized. Outch! Which smart guy at Motorola decided to use
  837.       the same processor ID for both products? The EC doesn't have a MMU,
  838.       the LC - as for example used by the LC75 Apollo board - does.
  839.       This might well explain a lot of problems of the Apollo board....
  840.     - Fixed a bug in the library init routine which would cause a guru
  841.       in case no MMU is available at all. The library MUST load, and
  842.       some functions will be available even without an MMU.
  843.     - Fixed several minor bugs of the TTx parsing routine, hopefully
  844.       correcting problems with some ancient 040 library releases that
  845.       didn't make use of the MMU (how should that work?)
  846.     - Fixed a serious bug of the Alert() replacement function, the stack
  847.       was used plain wrong. Thanks Etienne!
  848.     - Included an updated and more streamlined version of MuLockLib,
  849.       thanks to Gunther Nikl for providing it.
  850.     - Updated MuSetCacheMode, added more options.
  851.     - Added a configuration/preferences file and a preferences file
  852.       parser.
  853.     - Included now the "stripped" versions of the libraries in a sub-
  854.       directory of the same name. These editons don't contain the de-
  855.       bugging information and are therefore shorter.
  856.     - *News flash* 
  857.       This release comes with an upgraded version of the 68040.library.
  858.       This library is still in "beta" stage, but makes already use of
  859.       the mmu.library for the MMU configuration. It is for that reason
  860.       even shorter than the 37.30 release, even though it uses the latest
  861.       68040 FPU emulation code from Motorola.
  862.       FPU exceptions are configurable thru an LVO vector of the library,
  863.       but I haven't written a control tool yet. This will follow in the
  864.       next distribution.
  865.       This release *will only work* if the 37.30 runs on your machine,
  866.       you should, however, edit the ENVARC:MMU-Configuration file to 
  867.       to make some P5 boards working. The file should contain this line:
  868.  
  869. SetCacheMode    from 0x00f00000 size 0x00080000 valid iospace
  870.  
  871.       If you use this edition of the 68040.library, it might disable
  872.       caches for the Z-II address space completely. If this is not
  873.       desired, you may turn them on again with the following line in
  874.       the MMU-configuration file:
  875.  
  876. ClearTTX    
  877.  
  878. The path of the preferences file is ENV:MMU-Configuration or 
  879. ENVARC:MMU-Configuration if the first file is not found. The file looks like
  880. a standard shell script except that only three commands are known. All
  881. other commands are ignored silently for forwards compatibility, more might
  882. be made available in the future. The semicolon is used to separate comments 
  883. from the commands, the text following a semicolon is ignored.
  884.  
  885.  
  886. Release 0.38
  887. --------------
  888.     New in this release:
  889.  
  890.     - Added four internal undocumented LVOs for external CPU drivers.
  891.     - Fixed a bug in the CPU detection routine. A 060 EC or LC was
  892.       not recognized. Outch! Which smart guy at Motorola decided to use
  893.       the same processor ID for both products? The EC doesn't have a MMU,
  894.       the LC - as for example used by the LC75 Apollo board - does.
  895.       This might well explain a lot of problems of the Apollo board....
  896.     - Fixed a bug in the library init routine which would cause a guru
  897.       in case no MMU is available at all. The library MUST load, and
  898.       some functions will be available even without an MMU.
  899.     - Fixed several minor bugs of the TTx parsing routine, hopefully
  900.       correcting problems with some ancient 040 library releases that
  901.       didn't make use of the MMU (how should that work?)
  902.     - Fixed a serious bug of the Alert() replacement function, the stack
  903.       was used plain wrong. Thanks Etienne!
  904.     - Included an updated and more streamlined version of MuLockLib,
  905.       thanks to Gunther Nikl for providing it.
  906.  
  907. Release 0.37
  908. --------------
  909.     New in this release:
  910.  
  911.     - Added two tags for Get/SetContextData in preparation for the
  912.       memory library.
  913.     - Wrote a replacement AddMemList() function because some 
  914.       versions of the 68040/68060.library functions patch this function.
  915.       This release will adjust the MMU tables for the DEFAULT CONTEXT
  916.       only, which means that all memory must be ready AT LEAST AS SOON
  917.       AS A PRIVATE CONTEXT IS CREATED.
  918.  
  919.  
  920. In case you've problems with this library release:
  921. o) Please install the mmu.library_debug ON TOP of the mmu.library, i.e. use
  922.  
  923. copy mmu.library_debug to LIBS:mmu.library
  924.  
  925. o) Reset the system
  926. o) Run Sushi or Sashimi to fetch the output. Give them a HUGE buffer
  927. o) Load the library. MuLockLib would do that, for example.
  928.  
  929. Release 0.36
  930. --------------
  931.     News in this release:
  932.  
  933.     - Fixed MuMove4K, added the A1200 option and fixed the shutdown code.
  934.     - Fixed MuLockLib, there was a slight chance for a crash (thanks to
  935.       Gunther Nikl for reporting)
  936.     - Fixed the .fd-File. I forgot to include two functions making
  937.       the table useless, and forgot to include one library 
  938.       function in the library lvo jump table. Outch!
  939.     - Fixed the new memory map functions.
  940.     - Tested indirect descriptor functions, included a new test,
  941.       see MuIndirectTest.
  942.  
  943. I'm planning to upload the 0.36 to the Aminet next saturday, I won't be in
  944. town from July 18th to August 8th. 
  945.  
  946. Release 0.35
  947. -------------
  948.     News in this release: Something in the library, even though no
  949.     real serious bugs have been found. More functions, but more power-
  950.     ful debugging tools.
  951.  
  952.     - Added support functions for memory maps, likely untested.
  953.     - Added support functions for indirect descriptors and *VERY FAST*
  954.       indirect page swapping.
  955.     - Fixed a tiny bug in the 060 support which might have failed to
  956.       detect physical bus errors correctly.
  957.     - Fixed a bug in GetPageProperties which might have failed to
  958.       read remapped memory correctly.
  959.     - Streamlined the tag item parse functions.
  960.     - Updated documentation and includes.
  961.     - Wrote the disassembler.library, added to the distribution.
  962.     - Updated MuForce: The program makes use of the disassembler.library
  963.       and prints now a disassembly of the faulty code on demand.
  964.     - Fixed a bug in MuGuardianAngel, stack dump was broken.
  965.     - Updated MuGuardianAngel, included disassembly function.
  966.     - Updated MuMove4K a lot, included a PREPAREEMUL function,
  967.       wrote a better guide, drew a shell icon.
  968.     - Included more shell tools, PrintBusError, ResetBusError and
  969.       ClearTTx.
  970.  
  971. The Apollo LC060 75Mhz showed problems with the mmu.library. I don't know
  972. how these problems arose, but it might be that the MMU doesn't like the over-
  973. clocking. To test this, please run the "ClearTTx" program with the NATIVE
  974. Apollo setup and check whether this works or not.
  975.  
  976. The PrintBusError tool will dump the bus error vector. It should always
  977. point to the library.
  978.  
  979. The ResetBusError will repair the bus error vector in case it was messed
  980. up by a program. It should be run WITHOUT an active debugger, or the result
  981. will be worse, not better. An application for this program is to restore
  982. the correct bus error handler after having used the "SoftBoot" program or
  983. "SetCPU FastROM" or "CPU FastROM". Note that the latter two are obsolete
  984. and replaced by MuFastROM.
  985.  
  986.  
  987. Release 0.34.1
  988. --------------
  989.     I'm pretty happy with the 0.34 how it is now, I haven't found new
  990.     bugs. This doesn't mean there are none, though. (-;
  991.  
  992.     New in this release:
  993.  
  994.     - Updated MuGuardianAngel a bit. The "hit" messages are now more
  995.       informative and contain more detailed information about the
  996.       cause of the hit, as for example which memory chunk was released
  997.       etc... Thanks to Simon for the hint.
  998.     - Added a new program "MuLink" to the MuTools. This is a shell-only
  999.       developer tool for automatic "self-protection" of software. A
  1000.       program that gets "MuLink'd" will get its code (or other selected)
  1001.       segments automatically write protected. This is most important 
  1002.       for software that has to run on critical systems, as BBS's 
  1003.       and the like. MuLink is a post-processing tool much like ATOM.
  1004.       More about this tool in its documentation.
  1005.     - Added a "MuGuardianOff" icon.
  1006.     - Updated the documentation.
  1007.     - Included E developer files, thanks to Daniel Kasmeroglu. 
  1008.  
  1009.  
  1010. Remaining problems:
  1011.     
  1012.     - The usual ppc.library problem. Not about to be fixed.
  1013.     - The library still refuses to work correctly on an Appollo 75Mhz
  1014.       060EC board, I don't know why. TTx setup of this board is now
  1015.       supported correctly, but this doesn't seem to help. Wierd.
  1016.  
  1017. Release 0.34
  1018. ------------
  1019.     Sigh, the 0.33 DMA logic was still buggy....
  1020.  
  1021.     - Fixed (another) bug in CachePostDMA(). The routine failed to
  1022.       check the CPU AttnFlags correctly and hence did not restore
  1023.       the cache mode to copyback. This could have been resulted in
  1024.       slowdown of your machine, and hands of several MuTools.
  1025.     - Removed all references to the 68040 and 68060.library. This
  1026.       will allow a possible future 680x0 library to use the 
  1027.       mmu.library to build its MMU tree instead of implementing this
  1028.       function a second time.
  1029.  
  1030. I M P O R T A N T:
  1031.  
  1032. THIS MEANS THAT ALL THE MUTOOLS *MUST* BE RUN  A F T E R  SetPatch.
  1033.  
  1034. The only exception to this rule is MuMove4K.
  1035.  
  1036. Please DO NOT run the MMURemapTest with the cybscsi or cybppc.device. Both
  1037. devices are not designed to allow memory remapping (not my fault). In worst
  1038. case, they will trash your hard disk!!!
  1039.  
  1040.  
  1041. Thanks goes to Ulrich Falke for helping me to find these bugs, and 
  1042. furthermore to Michaela Prüß for supplying the includes and protos for the 
  1043. vbcc compiler!
  1044.  
  1045. Release 0.33
  1046. ------------
  1047.     Outch, the 0.30 was buggy!
  1048.  
  1049.     - Fixed a bug in the GetPageProperties() routine for the 030 and
  1050.       020 support code. The cache control functions overwrote an 
  1051.       important CPU register and therefore crashed MuForce.
  1052.     - Fixed a bug in the DMA control logic. Outch! This really broke
  1053.       things!
  1054.     - Fixed a bug in the MMU table rounding logic. Fixed one overflow
  1055.       problem that makes the procedure hang on some machines. 
  1056.       Additionally, I forgot to merge adjacent property nodes here.
  1057.     - I must have been crazy to remove the PROTECT option in MuFastROM.
  1058.       Fixed!
  1059.     - MuFastZero OFF improved, and the FORCENATIVE flag was broken
  1060.       completely.
  1061.     - MuGuardianAngel showed a few bogus exceptions on startup, depends
  1062.       on the system configuration. TRSaferPatches caused this, fixed.
  1063.     - Added the FixCybAccess workaround. It fixes - or actually 
  1064.       works around - a really bad design fault of the cybscsi.device.
  1065.       More on this in its readme.
  1066.     - Changed the SegTracker output style of MuForce and MuGuardianAngel
  1067.       to the Enforcer style. This is most useful for tools interpreting
  1068.       these lines.
  1069.  
  1070. Thanks to all the nice folks that reported bugs, and sorry for the 
  1071. inconvenience about all the bugs.
  1072.  
  1073. This distribution contains again a "mmu.library_debug". In case you encounter
  1074. problems, please rename this to "mmu.library", install "Sushi" or "Sashimi"
  1075. with a *LARGE* I/O buffer and run the tests again. Alternatively, connect
  1076. a terminal to the serial port, 9600 baud, 8 bit, 1 stop bit, no parity.
  1077.  
  1078. Please collect the output and sent it to my email address. This will help 
  1079. me a lot debugging the library.
  1080.  
  1081. -----> When reporting bugs, PLEASE PLEASE let me know:
  1082.  
  1083. o) About which version of the library you're running. I might have sent
  1084. some of you an updated version.
  1085. o) About which processor your system is running on.
  1086. o) A MuScan output.
  1087. o) Which SCSI/IDE device you're using.
  1088.  
  1089. In case you see a crash:
  1090.  
  1091. o) Please write down the guru number.
  1092. o) Try to reproduce the crash, try to find out which program causes the
  1093. crash. This means that you should try to edit your startup sequence and to
  1094. remove patches from there until the crash disappears. You don't need to
  1095. strip the startup-sequence permanently, but just to let me know which
  1096. program causes the incompatibility.
  1097.  
  1098. Please understand that a "It won't work on my computer" doesn't help me 
  1099. much to fix the problem. Try to be as concrete as possible, this will 
  1100. increase the propability enourmously that bugs get fixed. (-;
  1101.  
  1102. A special note about the 0.3x releases:
  1103.  
  1104. I introduced a new guru, namely "AN_PostSetup 0x3e000015". In case you see
  1105. this specific guru, let me know which program caused this.
  1106.  
  1107.  
  1108. A special note about MuGuardianAngel:
  1109.  
  1110. This program is NOT compatible with PoolMem. Try not to install PoolMem on
  1111. top of this, this won't work. MuGuardianAngel will be smart enough to cancel
  1112. PoolMem if it is running, but it is not smart enough to prevent its 
  1113. installation.
  1114.  
  1115.  
  1116. A special note about "version" and related utilities aka "verscheck":
  1117.  
  1118. These tools OPEN the libraries in question. Hence, if you run "version"
  1119. on a - possibly existant - 68040old.library, it will open this library and
  1120. re-install a MMU table on top of the already loaded table. Either do
  1121. not try this or remove the 68040new.library and the 68040old.library from
  1122. your LIBS: drawer.
  1123.  
  1124.  
  1125. A special note about "MMUCacheTest": 
  1126.  
  1127. If this program hangs on your system, please report this. Furthermore, please
  1128. run it *AGAIN*, but this time with the "NOMMU" option on the command line
  1129. and *WITHOUT ANY* tools that require the mmu.library. It would be best to
  1130. boot without startup-sequence, run "SetPatch" by hand and then immediately
  1131. "MMUCacheTest DH0: nommu".
  1132.  
  1133.  
  1134. Release 0.30
  1135. ------------
  1136.     Ouh, just too many changes to mention:
  1137.  
  1138.     - Added tags to setup the MMU table layout, as the page size,
  1139.       the depth of the MMU tree.
  1140.     - Added functions to get and set some control values of the
  1141.        MMU contexts.
  1142.     - Added page access exception handler.
  1143.     - CachePre/PostDMA patches are now always installed since 68020
  1144.       and 68030 based systems need the logical -> physical trans-
  1145.       lation as well.
  1146.     - Reworked the mmu.library memory management.
  1147.     - Fixed several bugs in the MuForce program, did not handle ROM
  1148.       remapping correctly.
  1149.     - MuFastRom and MuFastZero reworked a bit. MuFastZero OFF did
  1150.       not work. Added more options for both tools.
  1151.     - Added a new debugging tool: MuGuardianAngel. Some sort of
  1152.       memory protection that keeps free memory from getting over-
  1153.       written by faulty programs.
  1154.     - Added more options to MuSetCacheMode.
  1155.     - MuMove4K moves now the lowest 32K (and is hence misnamed). This
  1156.       avoid trouble with large MMU table sizes on 68030/68020 based 
  1157.       systems and pre-allocates memory for an "oxypatcher" type tool.
  1158.     - Added MuLockLib tool, check the readme.
  1159.     - ....
  1160.  
  1161.  
  1162. Release 0.27
  1163. ------------
  1164.     - Fixed a bug in the task scheldurer.
  1165.     - Added a second explicit cache flush for ColdReboot()
  1166.     - Fixed a bug in the branch cache flush of the '060... Sorry!    
  1167.     - Tested the library for public remapped memory... Works!
  1168.     - Tested the library for private MMU trees... Works!
  1169.  
  1170.     - Since the 0.27 works now within its specifications, this will
  1171.       be the last 0.2x release. We're going to 0.30 now.
  1172.  
  1173. Release 0.26
  1174. ------------
  1175.  
  1176.     - Fixed a bug in the exception handling, forgot to restore a6.
  1177.     - Fixed the return value of RebuildTree(). It's now TRUE on
  1178.       success, not DOSTRUE.
  1179.     - Fixed a bug in the table builder, merged sub-tree were released
  1180.       incorrectly.
  1181.     - Added the WithoutMMU() LVO entry.
  1182.     - Removed the AllocLineMem() LVO, this one was useless.
  1183.  
  1184. Release 0.25
  1185. ------------
  1186.  
  1187.     - Debugged 060 exception handler again. Found only one bug, ROM
  1188.       emulation was broken.
  1189.     - Enhanced AbsExecBase accesses - does no longer block interrupts
  1190.       unnecessary.
  1191.     - Fixed parts of the exception handler to read the faulty instruction
  1192.       from the correct function code space.
  1193.     - Added a complicated test for the EC030 processor that should
  1194.       finally work.
  1195.     - Enabled the MMULib internal exception handler test.
  1196.     - Removed all accesses to the ppc.library and reserved entries.
  1197.       PPC.lib compatibility is no longer an issue for me. The MMU.lib
  1198.       is WarpOs-compatible, though, as long as the system isn't 
  1199.       infected by Ralph's "software".
  1200.     - Added a safety test in the MMUCacheTest program to avoid
  1201.       hangs.
  1202.  
  1203. Release 0.24
  1204. ------------
  1205.  
  1206.     - Fixed the 030/851 exception handler, especially the emulation
  1207.       of instruction access of a possibly invalidated zero page,
  1208.       now really, *BIG* thanks to Dave!
  1209.     - MuForce does no longer ignore a remapped ROM. (Oops!)
  1210.     - MuForce does no longer touch the mapping of the fspace
  1211.       unless told to do so.
  1212.     - Fixed the assembler includes and autodocs, thanks to Tilman!
  1213.     - The context management of the library does no longer
  1214.       reset the remap destination in case the memory remap flag
  1215.       is not included in the mask settings. (Oops!)
  1216.     - Fixed the MMU table builder for MMU tables using more than
  1217.       32K entries.
  1218.     - The startup code selects now a better page layout for 030/851
  1219.       processors.
  1220.     - MuForce tries now to re-use an already relocated vector base
  1221.       if possible.
  1222.     - Tiny speedup in the "InstallDescriptor" routine could speed up
  1223.       MMU table building. There's room for more speedups, though.
  1224.     - Added a "nommu" flag for the MMUCacheTest program to check    
  1225.       your HD without the mmu.library. If this flag is used, the
  1226.       program *MUST* be run without the mmu.library currently loaded.
  1227.  
  1228. Related fixes of COP (release 1.73, not included in this distribution):
  1229.     - Fixed emulation of instruction access to the zero-page.
  1230.     - Fixed the RestoreVBR option.
  1231.     - Fixed the MMU disable mechanism on startup.
  1232.  
  1233. Special thanks goes to Dave "Ragman" for finding a lot of bugs in the 0.21
  1234. release.
  1235.  
  1236. -----------------------------------------------------------------------------
  1237.  
  1238. Compatibility warnings and bad software:
  1239.  
  1240. - The MMU tables generated by the "CPU FastROM" command, an official CBM tool,
  1241. are simply wrong if run on a 030 processor. Chip memory is marked as
  1242. "cacheable", which is plain wrong. Already spoke to Michael Sinz who agrees
  1243. in that point. Don't use it, run "MuFastRom" instead.
  1244.  
  1245. - The MMU tables build by "SetCPU FastRom" are not very well suited for 
  1246. MuForce. The MMU library will replace the table layout by something more
  1247. adapted.
  1248.  
  1249. Since these programs may install a "bogus" exception vector, you shouldn't
  1250. run both programs with the "FastROM" option. If you absolutely want to do, 
  1251. run them *before* installing any MMU.lib related program and COP - remember, 
  1252. you have been warned. "MuFastROM" will do better anyhow.
  1253.  
  1254.  
  1255. - CMQ060.lha from the Aminet: This program uses the MOVE16 instruction to
  1256. "speed up" the copy mem routines of the Os. Besides that the speedup is
  1257. minimal, you should be informed that this instruction is not fully 
  1258. supported by the Amiga hardware. A MOVE16 into the chip memory could yield
  1259. to "strange and wonderful things", and may or may not work. Its burst
  1260. accesses simply don't fit into the DMA access mechanism of the Amiga 
  1261. custom chips. (Note that no other instruction will try burst accesses
  1262. into non-cacheable memory!)
  1263. Moreover, due to a firmware bug of the '040, a MOVE16 on a system using
  1264. virtual memory might be unreliable and cause undesired side effects. Do 
  1265. not run this program!
  1266.  
  1267. MOVE16 is one of the non-supported instructions in an Amiga system, others
  1268. are TAS, CAS and CAS2 (which are of little use in a single processor system).
  1269.  
  1270. For more detailed information of MOVE16, check either the enforcer.guide or
  1271. the motorola documentation, I'm not making this up, and this is not 
  1272. mmu.library related.
  1273.  
  1274. Known Bugs:
  1275. -----------
  1276.  
  1277.     The MMU table manager rebuilds currently the MMU tables for a
  1278.     complete memory block even if only a minor sub-block was changed.
  1279.     Therefore, it may take longer to build the MMU table than absolutely
  1280.     required. I decided not to change this behaiviour because it
  1281.     keeps the mmu tables clean and optimized and avoids fragmentation.
  1282.  
  1283.     The MMU library builds currently 68030 MMU tables with the
  1284.     REPAIRABLE flag set less efficient than it could. However, it 
  1285.     was felt that a consistent table layout is more helpful than the
  1286.     (minimal) speedup.
  1287.  
  1288.     The library does not yet contain a workaround for a 040 firmware
  1289.     bug: If an illegal, line A, chk or unimplemented floating point
  1290.     instruction is located at the last 16 bits of a page and the next
  1291.     page is not available, the 040 generates an access fault instead
  1292.     of the proper exception. The fault address is the address of the
  1293.     missing page, and the PC points to the instruction in the preceeding
  1294.     page. This doesn't matter too much currently, it might become
  1295.     relevant in a VM system.
  1296.  
  1297. These bugs will be fixed within the next releases of the library, including
  1298. all the other bugs you may find.
  1299.     
  1300. -----------------------------------------------------------------------------
  1301.  
  1302. Special thanks goes to:
  1303.  
  1304. -Ralph Babel for giving information about the CachePreDMA/CachePostDMA
  1305.  functions and for some internals allowing me to write the MuOmniSCSIPatch.
  1306. -Carsten Schlote for starting development of a mmu.library aware 68060.lib.
  1307. -Michael Sinz (a real BIG thank you!) for discussing a lot of details of
  1308.  CachePreDMA/CachePostDMA, for sending me the sources of these functions
  1309.  in his 68040, and especially - and that's really great - for making the
  1310.  Enforcer sources available and for allowing me to reuse the exception
  1311.  handler of the Enforcer. This will happen in one of the next releases.
  1312. -Bjoern Schmidt for allowing me to run some tests on his 060 and for
  1313.  keeping several afternoons free for me.
  1314. -All the testers for running tests and sending me detailed information about
  1315.  their systems.
  1316.  
  1317. Thank you to all of you, this project won't clearly possible without your
  1318. support!    
  1319.  
  1320. -----------------------------------------------------------------------------
  1321.  
  1322. What is this:
  1323. -------------
  1324.     The mmu.library provides functions for MMU related operations
  1325.     as write- or read-protecting certain areas of memory for a
  1326.     given set of tasks, or marking memory regions as "swapped"
  1327.     virtual memory support. It offers an abstraction level on top
  1328.     of the actual MMU and a unified interface for MMU purposes.
  1329.  
  1330.     The MMU lib does NOT implement virtual memory, that's the purpose
  1331.     of another library - the memory.library. There's no much reason why
  1332.     any application except the memory.library and probably some debugging
  1333.     tools should call this library directly. The memory.library functions
  1334.     on top of this library should suffer for "all day purposes".
  1335.  
  1336.     The goal of the mmu.library is to provide an "abstraction layer" on
  1337.     top of the hardware, to allow programs to make use of the memory
  1338.     management hardware of the more advanced members of the MC68K
  1339.     processor family. Programs using the functions of the mmu.library
  1340.     do not need to modify the MMU tables directly and hence will not
  1341.     conflict with each other. The mmu.library interface provides all
  1342.     necessary functions to do that. This will allow programs like
  1343.     Enforcer and VMM to cooperate nicely with each other, provided both
  1344.     use this library.
  1345.  
  1346.     
  1347. Known bugs and problems of this implementation:
  1348. -----------------------------------------------
  1349.  
  1350. Things that require testing:
  1351.  
  1352.     - TTx register parsing updated, again. Should work fine with all the
  1353.       printouts I've collected, but you may still want to test it.
  1354.     - 68851 code likely untested, but I'm getting better. 
  1355.       I NEED YOUR HELP!
  1356.     - GetPageProperties/SetPageProperties are likely tested by the
  1357.       MuGuardianAngel program.
  1358.     - Page access exception handlers only likely tested by 
  1359.       MuGuardianAngel.
  1360.  
  1361. Things not yet implemented:
  1362.  
  1363.     - Patches for ppc libraries due to missing support. The
  1364.       ppc.library will remain unsupported, if you're the owner of
  1365.       a PPC board, run WarpOs, which is compatible.
  1366.  
  1367. Things the current design does not allow:
  1368.  
  1369.     - The MAPP_USED and MAPP_MODIFIED flags are not kept consistent
  1370.       by the library except for MAPP_SINGLE pages. I consider this
  1371.       as a minor problem since single page mode is required for
  1372.       virtual memory anyways.
  1373.     - MMU tables using the function codes. The amiga design shouldn't
  1374.       allow this anyways, but I don't know whether there's a board
  1375.       that makes use of them. (Doesn't look like, though).
  1376.     - Boards with two different MMU's on board. I've heard some
  1377.       rumours that there are actually 68040 boards with an additional
  1378.       68851. 
  1379.  
  1380. Recommended reading:
  1381. --------------------
  1382.  
  1383. The following books are recommended reading:
  1384.  
  1385.  
  1386. Motorola 68030 Enhanced 32-bit Microprocessor User's Manual    
  1387.     MC68030UM/AD Rev.3
  1388.  
  1389. Motorola 68040 User's Manual                    
  1390.     M68040UM/AD Rev.1
  1391.  
  1392. Motorola 68060 User's Manual                    
  1393.     M68060UM/AD Rev.1
  1394.  
  1395. Motorola M68000 Family Programmer's Reference Manual        
  1396.     M68000PM/AD Rev.1
  1397.  
  1398. Amiga Hardware Reference Manual, 3rd ed.
  1399.     Addison-Wesley Publishing Company, Inc.
  1400.     ISBN 0-201-56776-8
  1401.  
  1402. Amiga ROM Kernal Reference Manual, 3rd ed., Volume "Libraries"
  1403.     Addison-Wesley Publising Company, Inc.
  1404.     ISBN 0-201-56774-1
  1405.  
  1406. The Amiga Guru Book, 2nd Ed.
  1407.     Ralph Babel, Taunusstein 1989,1993
  1408.  
  1409. Additional sources:
  1410.     The Amiga Developer CD V1.1 
  1411.  
  1412.     The Enforcer.guide.
  1413.  
  1414.     Michael Sinz's documentation in the AmigaMail, on the DevCD 1.1.
  1415.  
  1416. Final words:
  1417. ------------
  1418.  
  1419. The mmu.library and the memory library will be my last project for the Amiga. 
  1420. It depends a bit on what happens with the Amiga in the next two years whether 
  1421. a PPC version of this library is required or not; hence, after all, this
  1422. can't be much more than a toy project that came several years too late.
  1423.  
  1424. So long,
  1425.     Thomas
  1426.